Resource allocation techniques for distributed computer systems with resource-consuming clients, such as virtual machines (VMs), are important to ensure that the clients are operating at desired or target levels. For example, if a VM dedicated to sales is running on a host computer where CPU and memory are overextended to other VMs, that VM may not be able to process orders at an acceptable level. In such a situation, additional resources of the host computer should be allocated to the sales VM or the sales VM should be moved to another host computer that has sufficient resources so that the sales VM can run efficiently at or above the acceptable level.
Conventional resource allocation techniques execute a resource allocation analysis for a single distributed computer system using at least the current utilizations of various resources of the distributed computer system and the current requirements of the various components of the distributed computer system to make changes with respect to resource allocation in the distributed computer system. However, the resource allocation analysis can be computationally intensive as the number of components in a distributed computer system increases. Thus, the number of components that can be added to a distributed computer system is limited by the processing power of the device running the resource allocation analysis. In addition, if an update or patch for the resource allocation analysis algorithm becomes available, the resource allocation analysis algorithms running at different distributed computer systems would need to be updated or patched.